<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta http-equiv="Content-Language" content="zh-CN"><title>user@.service
  中文手册 [金步国]</title><style>
@font-face { font-family: "JinBuGuoWebMono"; src: url("http://www.jinbuguo.com/d/mono.ttf") format("truetype"); }
* { font-family: "JinBuGuoWebMono", "Ubuntu Mono", "Consolas", "Menlo", monospace; }
body { margin:10px; }
h1 { text-align:center; background:#ddd; }
h2#auth_name { text-align:center; margin: 10px 5%; }

    a.headerlink {
      color: #c60f0f;
      font-size: 0.8em;
      padding: 0 4px 0 4px;
      text-decoration: none;
      visibility: hidden;
    }

    a.headerlink:hover {
      background-color: #c60f0f;
      color: white;
    }

    h1:hover > a.headerlink, h2:hover > a.headerlink, h3:hover > a.headerlink, dt:hover > a.headerlink {
      visibility: visible;
    }
</style><script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?d286c55b63a3c54a1e43d10d4c203e75"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><h1>user@.service 中文手册</h1><h2 id="auth_name">译者：<strong><a href="../index.html">金步国</a></strong></h2><hr><h3>版权声明</h3><p>本文译者是一位开源理念的坚定支持者，所以本文虽然不是软件，但是遵照开源的精神发布。</p><ul><li>无担保：本文译者不保证译文内容准确无误，亦不承担任何由于使用此文档所导致的损失。</li><li>自由使用：任何人都可以自由的<u>阅读/链接/打印</u>此文档，无需任何附加条件。</li><li>名誉权：任何人都可以自由的<u>转载/引用/再创作</u>此文档，但必须保留译者署名并注明出处。</li></ul><h3>其他作品</h3><p>本文译者十分愿意与他人分享劳动成果，如果你对我的其他翻译作品或者技术文章有兴趣，可以在如下位置查看现有的作品集：</p><ul><li><a href="../index.html">金步国作品集</a> [ <a href="../index.html">http://www.jinbuguo.com/</a> ]</li></ul><h3>联系方式</h3><p>由于译者水平有限，因此不能保证译文内容准确无误。如果你发现了译文中的错误(哪怕是错别字也好)，请来信指出，任何提高译文质量的建议我都将虚心接纳。</p><ul><li>Email(QQ)：70171448在QQ邮箱</li></ul><hr><a href="systemd.index.html">手册索引</a> ·
  <a href="systemd.directives.html">指令索引</a><span style="float:right">systemd-241</span><hr><div class="refentry"><a name="user@.service"></a><div class="titlepage"></div><div class="refnamediv"><h2>名称</h2><p>user@.service, user-runtime-dir@.service — 管理用户进程的系统单元</p></div><div class="refsynopsisdiv"><h2>大纲</h2><p><code class="filename">user@<em class="replaceable"><code>UID</code></em>.service</code></p><p><code class="filename">user-runtime-dir@<em class="replaceable"><code>UID</code></em>.service</code></p><p><code class="filename">user-<em class="replaceable"><code>UID</code></em>.slice</code></p></div><div class="refsect1"><a name="id-1.5"></a><h2 id="描述">描述<a class="headerlink" title="Permalink to this headline" href="user@.service.html#%E6%8F%8F%E8%BF%B0">¶</a></h2><p>
    <a href="systemd.html#"><span class="citerefentry"><span class="refentrytitle">systemd</span>(1)</span></a>
    系统管理器(PID=1)以
    <code class="filename">user@<em class="replaceable"><code>UID</code></em>.service</code> 为名称启动用户管理单元实例。
    每一个 <span class="command"><strong>systemd --user</strong></span> 实例都管理着一个包含该用户所有运行单元的层次结构。
    详见
    <a href="systemd.html#"><span class="citerefentry"><span class="refentrytitle">systemd</span>(1)</span></a>
    手册以了解 systemd 单元的一般概念、
    <a href="systemd.special.html#"><span class="citerefentry"><span class="refentrytitle">systemd.special</span>(1)</span></a>
    手册以了解用于组成系统单元/用户单元的基本层次结构的特殊单元。</p><p>每一个 <code class="filename">user@<em class="replaceable"><code>UID</code></em>.service</code> 单元实例都附带着一个
     <code class="filename">user-runtime-dir@<em class="replaceable"><code>UID</code></em>.service</code> 系统单元实例，
    用于创建用户运行时目录
    <code class="filename">/run/user/<em class="replaceable"><code>UID</code></em></code> ，
    并在该单元停止时自动将其删除。</p><p>用户进程可以由 <code class="filename">user@.service</code> 的实例启动，在这种情况下，
    在系统的层次结构中，用户进程将成为该单元的一部分。
    用户进程也可以在其他地方启动，例如由
    <a href="http://www.jinbuguo.com/systemd/sshd.html#"><span class="citerefentry"><span class="refentrytitle">sshd</span>(8)</span></a>
    或者像 <span class="command"><strong>gdm</strong></span> 这样的显示管理器启动，在这种情况下，将会形成一个 .scope 单元(参见
    <a href="systemd.scope.html#"><span class="citerefentry"><span class="refentrytitle">systemd.scope</span>(5)</span></a> 手册)。
     <code class="filename">user@<em class="replaceable"><code>UID</code></em>.service</code> 与 scope 单元都将被收集在
     <code class="filename">user-<em class="replaceable"><code>UID</code></em>.slice</code> 单元之中。</p><p>所有 <code class="filename">user-<em class="replaceable"><code>UID</code></em>.slice</code>
    单元都收集在 <code class="filename">user.slice</code> 单元之下，详见
    <a href="systemd.special.html#"><span class="citerefentry"><span class="refentrytitle">systemd.special</span>(8)</span></a> 手册。
    </p></div><div class="refsect1"><a name="id-1.6"></a><h2 id="针对已登录用户的资源控制">针对已登录用户的资源控制<a class="headerlink" title="Permalink to this headline" href="user@.service.html#%E9%92%88%E5%AF%B9%E5%B7%B2%E7%99%BB%E5%BD%95%E7%94%A8%E6%88%B7%E7%9A%84%E8%B5%84%E6%BA%90%E6%8E%A7%E5%88%B6">¶</a></h2><p>针对已登录用户的资源控制可以在几个不同的层次上进行配置。
    正如前文所述，因为 <code class="filename">user.slice</code> 包含了所有用户的进程，
    所以在此 slice 上施加的资源限制将会作用于全部已登录用户的总体。
    通常通过例如 <code class="filename">/etc/systemd/system/user.slice.d/resources.conf</code> 这样的配置片段实现。
    </p><p>属于单个已登录用户的全部进程都收集在
    <code class="filename">user-<em class="replaceable"><code>UID</code></em>.slice</code> 之下。
    针对单个用户的资源限制可以通过此 slice 来实现(通过例如 <code class="filename">/etc/systemd/system/user-1000.slice.d/resources.conf</code> 这样的配置片段)。
    如果想对每一个已登录用户都施加相同的资源限制，可以通过
     <code class="filename">user-.slice</code> 单元(剪掉单元名称)的配置片段来实现。例如，配置片段 <code class="filename">/etc/systemd/system/user-.slice.d/resources.conf</code> 将会被包含进所有
    <code class="filename">user-<em class="replaceable"><code>UID</code></em>.slice</code> 单元中。参见
    <a href="systemd.unit.html#"><span class="citerefentry"><span class="refentrytitle">systemd.unit</span>(5)</span></a>
    以了解单元配置片段的工作原理。</p><p>在一个用户登录的同时，将会自动为该用户的登录会话创建一个 .scope 单元(参见前面的小节)，
    创建 scope 单元的操作可以由
    <a href="pam_systemd.html#"><span class="citerefentry"><span class="refentrytitle">pam_systemd</span>(8)</span></a> 实施。
    此 PAM 模块与
    <a href="systemd-logind.service.html#"><span class="citerefentry"><span class="refentrytitle">systemd-logind.service</span>(8)</span></a>
    通信以创建会话 scope 单元，并提供对硬件资源的访问。
    针对该 scope 单元的资源控制，既可以通过 PAM 模块的配置来实现(详见
    <a href="pam_systemd.html#"><span class="citerefentry"><span class="refentrytitle">pam_systemd</span>(8)</span></a> 手册)、
    也可以通过常规的单元配置片段来实现。不过需要注意的是，后一种方法没有实际意义，
    因为该 scope 单元的名称是无法预知的，所以实践中只能通过 PAM 模块的配置来实现。</p><p>通常，任何针对单元的资源控制都可以用于
    <code class="filename">user@<em class="replaceable"><code>UID</code></em>.service</code>
    单元与上文提及的 slice 单元。详见
    <a href="systemd.resource-control.html#"><span class="citerefentry"><span class="refentrytitle">systemd.resource-control</span>(5)</span></a>
    以了解更多有关资源控制的详情。</p></div><div class="refsect1"><a name="id-1.7"></a><h2 id="例子">例子<a class="headerlink" title="Permalink to this headline" href="user@.service.html#%E4%BE%8B%E5%AD%90">¶</a></h2><div class="example"><a name="id-1.7.2"></a><p class="title"><b>例 1. 拥有两个已登录用户的控制组层次结构</b></p><div class="example-contents"><pre class="programlisting">$ systemd-cgls
Control group /:
-.slice
├─user.slice
│ ├─user-1000.slice
│ │ ├─user@1000.service
│ │ │ ├─pulseaudio.service
│ │ │ │ └─2386 /usr/bin/pulseaudio --daemonize=no
│ │ │ └─gnome-terminal-server.service
│ │ │   └─init.scope
│ │ │     ├─ 4127 /usr/libexec/gnome-terminal-server
│ │ │     └─ 4198 zsh
│ │ …
│ │ └─session-4.scope
│ │   ├─ 1264 gdm-session-worker [pam/gdm-password]
│ │   ├─ 2339 /usr/bin/gnome-shell
│ │   …
│ │ ├─session-19.scope
│ │   ├─6497 sshd: zbyszek [priv]
│ │   ├─6502 sshd: zbyszek@pts/6
│ │   ├─6509 -zsh
│ │   └─6602 systemd-cgls --no-pager
│ …
│ └─user-1001.slice
│   ├─session-20.scope
│   │ ├─6675 sshd: guest [priv]
│   │ ├─6708 sshd: guest@pts/6
│   │ └─6717 -bash
│   └─user@1001.service
│     ├─init.scope
│     │ ├─6680 /usr/lib/systemd/systemd --user
│     │ └─6688 (sd-pam)
│     └─sleep.service
│       └─6706 /usr/bin/sleep 30
…</pre><p> UID=1000 的用户通过 <span class="command"><strong>gdm</strong></span> (<code class="filename">session-4.scope</code>) 与
      <a href="http://www.jinbuguo.com/systemd/ssh.html#"><span class="citerefentry"><span class="refentrytitle">ssh</span>(1)</span></a>
      (<code class="filename">session-19.scope</code>) 登录，
      同时拥有一个用户管理单元实例(<code class="filename">user@1000.service</code>)。
      UID=1001 的用户通过 <span class="command"><strong>ssh</strong></span> (<code class="filename">session-20.scope</code>) 登录，
      同时拥有一个用户管理单元实例(<code class="filename">user@1001.service</code>)。
      这些(叶子)系统单元向上构成了 <code class="filename">user-1000.slice</code> 与
      <code class="filename">user-1001.slice</code> 单元，进一步向上又构成了 <code class="filename">user.slice</code> 单元。用户单元可见于
      <code class="filename">user@.service</code> 实例之下(<code class="filename">pulseaudio.service</code>, <code class="filename">gnome-terminal-server.service</code>, <code class="filename">init.scope</code>, <code class="filename">sleep.service</code>)。
      </p></div></div><br class="example-break"><div class="example"><a name="id-1.7.3"></a><p class="title"><b>例 2. 默认用户资源限制</b></p><div class="example-contents"><pre class="programlisting">$ systemctl cat user-1000.slice
# /usr/lib/systemd/system/user-.slice.d/10-defaults.conf
# …
[Unit]
Description=User Slice of UID %j
After=systemd-user-sessions.service

[Slice]
TasksMax=33%</pre><p> <code class="filename">user-<em class="replaceable"><code>UID</code></em>.slice</code> 单元默认不存在单元文件。
      只能通过单元配置片段来施加资源限制，
     这种方式便于按照标准的单元配置片段作用机制对配置进行替换和扩展(参见第一小节)。</p></div></div><br class="example-break"></div><div class="refsect1"><a name="id-1.8"></a><h2 id="参见">参见<a class="headerlink" title="Permalink to this headline" href="user@.service.html#%E5%8F%82%E8%A7%81">¶</a></h2><p>
      <a href="systemd.html#"><span class="citerefentry"><span class="refentrytitle">systemd</span>(1)</span></a>,
      <a href="systemd.service.html#"><span class="citerefentry"><span class="refentrytitle">systemd.service</span>(5)</span></a>,
      <a href="systemd.slice.html#"><span class="citerefentry"><span class="refentrytitle">systemd.slice</span>(5)</span></a>,
      <a href="systemd.resource-control.html#"><span class="citerefentry"><span class="refentrytitle">systemd.resource-control</span>(5)</span></a>,
      <a href="systemd.exec.html#"><span class="citerefentry"><span class="refentrytitle">systemd.exec</span>(5)</span></a>,
      <a href="systemd.special.html#"><span class="citerefentry"><span class="refentrytitle">systemd.special</span>(7)</span></a>,
      <a href="http://man7.org/linux/man-pages/man8/pam.8.html"><span class="citerefentry"><span class="refentrytitle">pam</span>(8)</span></a>
    </p></div></div></body></html>
